# 三角函数 用于弧度计算的的 sin()（正弦）、cos()（余弦）和 tan()（正切）三角函
import numpy as np

arr = np.array([0, 30, 60, 90, 120, 150, 180])
# 计算arr数组中给定角度的三角函数值
# 通过乘以np.pi/180将其转换为弧度
print(np.sin(arr * np.pi / 180))
# [0.00000000e+00 5.00000000e-01 8.66025404e-01 1.00000000e+00
#  8.66025404e-01 5.00000000e-01 1.22464680e-16]
print(np.cos(arr * np.pi / 180))
# [ 1.00000000e+00  8.66025404e-01  5.00000000e-01  6.12323400e-17
#  -5.00000000e-01 -8.66025404e-01 -1.00000000e+00]
print(np.tan(arr * np.pi / 180))
# [ 0.00000000e+00  5.77350269e-01  1.73205081e+00  1.63312394e+16
#  -1.73205081e+00 -5.77350269e-01 -1.22464680e-16]

# 除了上述三角函数以外，NumPy 还提供了 arcsin，arcos 和 arctan 反三角函数。
# 若要想验证反三角函数的结果，可以通过 numpy.degrees() 将弧度转换为角度来实现
arr = np.array([0, 30, 60, 90])
# 正弦值数组
sinval = np.sin(arr * np.pi / 180)
print(sinval)
# 计算角度反正弦，返回值以弧度为单位
cosec = np.arcsin(sinval)
print(cosec)
# 通过degrees函数转化为角度进行验证
print(np.degrees(cosec))
# 余弦值数组
cosval = np.cos(arr * np.pi / 180)
print(cosval)
# 计算反余弦值，以弧度为单位
sec = np.arccos(cosval)
print(sec)
# 通过degrees函数转化为角度进行验证
print(np.degrees(sec))
# 下面是tan()正切函数
tanval = np.tan(arr * np.pi / 180)
print(tanval)
cot = np.arctan(tanval)
print(cot)
print(np.degrees(cot))

# 舍入函数
#  numpy.around()  该函数返回一个十进制值数，并将数值四舍五入到指定的小数位上。
arr = np.array([12.202, 90.23120, 123.020, 23.202])
print(arr)  # [12.202 90.2312 123.02 23.202]
print("数组值四舍五入到小数点后两位", np.around(arr, 2))  # [12.2 90.23 123.02 23.2]
print("数组值四舍五入到小数点后-1位", np.around(arr, -1))  # [10. 90. 120. 20.]
# numpy.floor() 该函数表示对数组中的每个元素向下取整数，即返回不大于数组中每个元素值的最大整数
a = np.array([-1.8, 1.1, -0.4, 0.9, 18])
# 对数组a向下取整
print(np.floor(a))  # [-2.  1. -1.  0. 18.]
# numpy.ceil() 该函数与 floor 函数相反，表示向上取整
a = np.array([-1.8, 1.1, -0.4, 0.9, 18])
# 对数组a向上取整
print(np.ceil(a))  # [-1.  2. -0.  1. 18.]
